home *** CD-ROM | disk | FTP | other *** search
Oberon Document | 1995-08-09 | 4.8 KB | 140 lines | [oODC/obnF] |
- Documents.StdDocumentDesc
- Documents.DocumentDesc
- Containers.ViewDesc
- Views.ViewDesc
- Stores.StoreDesc
- Documents.ModelDesc
- Containers.ModelDesc
- Models.ModelDesc
- Stores.ElemDesc
- TextViews.StdViewDesc
- TextViews.ViewDesc
- TextModels.StdModelDesc
- TextModels.ModelDesc
- TextModels.AttributesDesc
- Helvetica
- Helvetica
- Helvetica
- StdStamps.StdViewDesc
- Helvetica
- Helvetica
- Helvetica
- MODULE NewViews;
- IMPORT Domains, Stores, Ports, Views, Controllers, Properties;
- CONST
- minVersion = 0; maxVersion = 0;
- TYPE
- View = POINTER TO RECORD (Views.ViewDesc)
- (* view fields *)
- END;
- ViewOp = POINTER TO RECORD (Domains.OperationDesc)
- view: View;
- (* view-operation fields *)
- END;
- (* ViewOp *)
- PROCEDURE (op: ViewOp) Do;
- BEGIN
- (* perform view operation *)
- Views.Update(op.view, Views.keepFrames) (* restore v in any frame that displays it *)
- END Do;
- PROCEDURE NewViewOp (view: View (* additional parameters *) ): ViewOp;
- VAR op: ViewOp;
- BEGIN
- ASSERT(view # NIL, 20);
- NEW(op);
- (* set up operation parameters *)
- RETURN op
- END NewViewOp;
- (* View *)
- PROCEDURE (v: View) Internalize (VAR rd: Stores.Reader);
- VAR version: SHORTINT;
- BEGIN
- (*ASSERT(v not yet initialized, 20);*)
- v.Internalize^(rd);
- IF ~rd.cancelled THEN
- rd.ReadVersion(minVersion, maxVersion, version);
- IF ~rd.cancelled THEN
- (* read view fields *)
- END
- END
- END Internalize;
- PROCEDURE (v: View) Externalize (VAR wr: Stores.Writer);
- BEGIN
- (*ASSERT(v already initialized, 20);*)
- v.Externalize^(wr);
- wr.WriteVersion(maxVersion);
- (* write view fields *)
- END Externalize;
- PROCEDURE (v: View) CopyFrom (source: Views.View);
- BEGIN
- (*ASSERT(v not yet initialized, 20);*)
- ASSERT(source # NIL, 21);
- ASSERT(Stores.SameType(v, source), 23);
- v.CopyFrom^(source);
- WITH source: View DO
- (*ASSERT(source already initialized, 22);*)
- (* copy view fields *)
- END
- END CopyFrom;
- PROCEDURE (v: View) Restore (f: Views.Frame; l, t, r, b: LONGINT);
- VAR w, h: LONGINT;
- BEGIN
- (* restore foreground in rectangle (l, t, r, b) *)
- (* replace the body of this procedure with your Restore behavior *)
- v.context.GetSize(w, h);
- f.DrawLine(0, 0, w, h, f.dot, Ports.red)
- END Restore;
- PROCEDURE (v: View) HandleCtrlMsg (f: Views.Frame; VAR msg: Controllers.Message; VAR focus: Views.View);
- BEGIN
- ASSERT(focus = NIL, 23);
- WITH msg: Controllers.PollOpsMsg DO
- (* specify which editing operations are supported *)
- | msg: Controllers.TrackMsg DO
- (* implement mouse tracking *)
- | msg: Controllers.EditMsg DO
- (* implement editing operations *)
- ELSE (* ignore other messages *)
- END
- END HandleCtrlMsg;
- PROCEDURE (v: View) HandlePropMsg (VAR p: Properties.Message);
- CONST defaultWidth = 100 * Ports.mm; defaultHeight = 70 * Ports.mm;
- BEGIN
- WITH p: Properties.FocusPref DO
- p.atLocation := FALSE; p.hotFocus := FALSE; p.setFocus := TRUE; p.selectOnFocus := TRUE
- | p: Properties.SizePref DO
- IF p.w = Views.undefined THEN p.w := defaultWidth END;
- IF p.h = Views.undefined THEN p.h := defaultHeight END
- ELSE (* ignore other messages *)
- END
- END HandlePropMsg;
- (** miscellaneous **)
- PROCEDURE Focus* (): Views.View;
- VAR v: Views.View;
- BEGIN
- v := Controllers.FocusView();
- IF (v # NIL) & (v IS View) THEN RETURN v(View) ELSE RETURN NIL END
- END Focus;
- PROCEDURE New* (): Views.View;
- VAR v: View;
- BEGIN
- NEW(v);
- (* initialize view fields *)
- RETURN v
- END New;
- PROCEDURE Deposit*;
- BEGIN
- Views.Deposit(New())
- END Deposit;
- END NewViews.
- TextControllers.StdCtrlDesc
- TextControllers.ControllerDesc
- Containers.ControllerDesc
- Controllers.ControllerDesc
- TextRulers.StdRulerDesc
- TextRulers.RulerDesc
- TextRulers.StdStyleDesc
- TextRulers.StyleDesc
- TextRulers.AttributesDesc
- Helvetica
- Documents.ControllerDesc
-